package jukebox.model.qnaboard;

import java.util.List;
import jukebox.model.common.ListVO;

import jukebox.model.qnacomment.QnACommentVO;

public interface QnABoardService {
	/**
	* @method : writeContent
	* @author : 최민석
	* @since : 2014-06-23
	* @param : QnABoardVO-게시글 내용이 담긴 vo
	* @return : int-작성한 글 번호
	* @comment : 글 작성하고 작성하는 시점에서의 no를 가져온다.
	*/
	public int writeContent(QnABoardVO bvo);
	
	/**
	* @method : updateContent
	* @author : 최민석
	* @since : 2014-06-23
	* @param : QnABoardVO-게시글 내용이 담긴 vo
	* @return : void
	* @comment : 변경된 글 제목&내용을 적용한다.
	*/
	public void updateContent(QnABoardVO bvo);
	
	/**
	* @method : deleteContent
	* @author : 최민석
	* @since : 2014-06-23
	* @param : int-게시글 번호
	* @return : int-작성한 글 번호
	* @comment : 글 작성하고 작성하는 시점에서의 no를 가져온다.
	*/
	public void deleteContent(int no);
	
	/**
	* @method : pagingContent
	* @author : 최민석
	* @since : 2014-06-23
	* @param : 	int-보여줄 페이지 수
	* @return : ListVO<QnABoardVO>
	* @comment : 글 목록을 페이징 해서 가져온다.
	*/
	public ListVO<QnABoardVO> pagingContent(Integer nowPage, String title);
	
	/**
	* @method : pagingContent
	* @author : 최민석
	* @since : 2014-06-23
	* @param : 	int-보여줄 페이지 수
	* @return : ListVO<QnABoardVO>
	* @comment : 글의 내용을 가져온다
	*/
	public QnABoardVO findContentByNo(int no);
	
	/**
	* @method : pagingContent
	* @author : 최민석
	* @since : 2014-06-24
	* @param : 	int-보여줄 페이지 수
	* @return : ListVO<QnABoardVO>
	* @comment : 조회수를 올리면서 글의 내용을 가져온다
	*/
	public QnABoardVO findContentByNoIncHit(int no);
	
	/**
	* @method : findContentByNoToModify
	* @author : 최민석
	* @since : 2014-06-23
	* @param : 	int-게시물 번호
	* @return : QnABoardVO
	* @comment : 수정하기위한 글의 내용을 가져온다.
	*/
	public QnABoardVO findContentByNoToModify(int no);
	
	public ListVO<QnACommentVO> writeComment(QnACommentVO qcvo);
	public ListVO<QnACommentVO> deleteComment(int no, int boardNo);
	public ListVO<QnACommentVO> choiceComment(int commentNo, int boardNo, Integer page);
	
	/**
	* @method : findCommentListByBoardNo
	* @author : 최민석
	* @since : 2014-06-25
	* @param : 	int-게시물 번호
	* @return : List<QnACommentVO>
	* @comment : 특정 게시글에 달려있는 댓글목록을 가져온다.
	*/
	public List<QnACommentVO> findCommentListByBoardNo(int boardNo);
	public ListVO<QnACommentVO> modifyComment(QnACommentVO vo, Integer page);
	/**
	* @method : findCommentListByBoardNo
	* @author : 최민석
	* @since : 2014-06-30
	* @param : 	int-게시물 번호
	* 				Integer-페이지
	* @return : List<QnACommentVO>
	* @comment : 특정 게시글에 달려있는 댓글목록 페이징하여 가져온다.
	*/
	public ListVO<QnACommentVO> findPagedCommentListByBoardNo(int boardNo, Integer page);

	
}
